<?php
class Application_Plugin_PasswordStrength extends Zend_Validate_Abstract
{
    const LENGTH  = 'length';
    const UPPER   = 'upper';
    const LOWER   = 'lower';
    const DIGIT   = 'digit';
    const ENGLISH = 'english';
    
    protected $_messageTemplates = array(

        self::LENGTH  => "Пароль должен быть длиной как минимум 8 символов",
        self::UPPER   => "Пароль должен содержать как минимум одну букву в верхнем регистре",
        self::LOWER   => "Пароль должен содержать как минимум одну букву в нижнем регистре",
        self::DIGIT   => "Пароль должен содержать как минимум один цифровой символ",
        self::ENGLISH => "Пароль должен содержать буквы латинского алфавита");
    
    public function isValid($value)
    {
        $this->_setValue($value);
        $isValid = true;
        
        if (!preg_match('/^[А-Яа-я]$/', $value)){
            $this->_error(self::ENGLISH);
            $isValid = false;
        }
       
        
        if (strlen($value) < 8) {
            $this->_error(self::LENGTH);
            $isValid = false;
        }
        
        if (!preg_match('/[A-Z]/', $value)) {
            $this->_error(self::UPPER);
            $isValid = false;
        }
        if (!preg_match('/[a-z]/', $value)) {
            $this->_error(self::LOWER);
            $isValid = false;
        }
        if (!preg_match('/\d/', $value)) {
            $this->_error(self::DIGIT);
            $isValid = false;
        }
        return $isValid;
    }
}